package main
// main 包下的 go 文件最终会编译成一个可执行文件
import "fmt"

// func 函数之外只能存放一些变量、常量、函数、类型的声明

//声明变量
var name  string = "罗俊华"
var age int = 18
var isStudent bool = false

//批量声明
var (
	tittle string  // 默认是空字符串""
	count int      // 默认为0
	done bool // 默认 false
)
// go 语言函数外的语句必须以 关键字开头
//tittle  ="不可以"

//定义常量
const PI = 3.1415926

//批量声明时，如果后面的常量都没有指定初始值，则和此常量的上一个常量的值相等
const (
	a=100
	b
	c
)

// main()  函数为整个程序执行的入口
func main() {

	done = true
	tittle = "广告"


	var haha string ="函数中声明了的变量，必须要使用才可以"

	// 类型推导，可以自动根据值的类型，自动判断变量的类型是什么
	var wula /*string*/= "乌拉尔山脉"

	fmt.Printf("早上好:%s，%s\n",name,haha)

	fmt.Printf("使用类型推导的变量：%s\n",wula)

//	简短变量声明，只能在函数内使用
// 可以根据变量初始值的类型来推断变量的类型
	short :="我是简短变量声明，我只能在函数里面才可以使用"

	fmt.Printf("变量值是：【%v】，推断出来的变量类型是【%T】\n",short,short)

	fmt.Printf("圆周率是：%f\n",PI)

	fmt.Printf("常量的批量声明：a = %d ,b = %d, c= %d\n",a,b,c)

//	匿名变量，在使用多重赋值时，如果要忽略某一个值，可以使用匿名变量（_）来表示
// 匿名变量不会占用空间，不会分配内存，所以匿名变量之间不存在重复声明


//一次声明多个相同类型的变量
	var aa,bb int = 100,200
	fmt.Printf("aa = %d, bb = %d\n",aa,bb)


//	一次声明多个不同类型的变量
	var cc,dd = 300, "你好，我是字符串"
	fmt.Printf("cc = %d, dd = %s\n",cc,dd)

// 不用 var，一次性声明多个不同类型的变量
	ee,ff := 998,"可以吗"
	fmt.Printf("ee = %d, ff = %s\n",ee,ff)

// 多行的变量声明方式
	var (
		hh int = 235
		ii string= "大家好"
	)

	fmt.Printf("hh = %d, ii = %s\n",hh,ii)

}
